package com.siyu.predict.service;

import com.siyu.common.core.domain.AjaxResult;
import com.siyu.common.utils.WordReport;
import com.siyu.predict.dto.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.http.ResponseEntity;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface PredictService {
    /**
     * 查询方案详情
     * @param id 方案id
     * @return
     */
    Map<Object, Object> getPlanDetail(String id);

    /**
     * 保存手动计算方案
     * @param planDto
     */
    void saveManualPlan(PlanDto planDto);

    /**
     * 获取预报计算页面的实测降雨查询
     * @param planDto
     * @return
     */
    Map<Object, Object> getDrpData(PlanDto planDto) throws Exception;

    /**
     * 预报模型历史手动计算
     * @param hisCalcDto
     * @return
     */
    Map<Object, Object> hisCalc(HisCalcDto hisCalcDto) throws Exception;

    /**
     * 预报模型实时手动计算
     * @param relCalcDto
     * @return
     */
    Map<Object, Object> relCalc(RelCalcDto relCalcDto) throws Exception;

    /**
     * 预报模型假拟手动计算
     * @param hypCalcDto
     * @return
     * @throws Exception
     */
    Map<Object, Object> hypCalc(HypCalcDto hypCalcDto) throws Exception;

    /**
     * 预报方案对比
     * @param contrastDto
     * @return
     */
    Map<Object, Object> contrast(ContrastDto contrastDto);

    /**
     * 获取自动计算数据
     * @return
     */
    Map<Object, Object> getAutoData(String rscd) throws Exception;

    Map<Object, Object> getpreDrpData(PlanDto planDto) throws Exception;

    /**
     * 保存降雨情景
     * @param rainSenceDto
     */
    void saveRainsence(RainSenceDto rainSenceDto);

    /**
     * 获取气象预报数据
     * @param rscd
     * @return
     */
    Map<Object, Object> getWeatherData(String rscd);

    byte[] createBriefReportDocument(DocumentDto documentDto) throws IOException, InvalidFormatException;

    AjaxResult orthostate(Double totaldrp, Integer numt, String type);
}
